package com.question.business.dict.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.question.business.dict.entity.DictType;
import com.question.business.dict.model.ao.DictTypeAddAO;
import com.question.business.dict.model.ao.DictTypeEnabledAO;
import com.question.business.dict.model.ao.DictTypePageAO;
import com.question.business.dict.model.ao.DictTypeUpdateAO;
import com.question.business.dict.model.dto.DictCacheDTO;
import com.question.business.dict.model.vo.DictTypeAddVO;
import com.question.business.dict.model.vo.DictTypeDetailVO;
import com.question.business.dict.model.vo.DictTypeVO;

import java.util.List;

/**
 * 字典类型服务
 *
 * @author star
 * @since 2023-09-07
 */
public interface IDictTypeService extends IService<DictType> {

    /**
     * 字典类型分页查询
     *
     * @param ao 请求参数
     * @return Page<DictTypeVO> 响应参数
     */
    Page<DictTypeVO> queryDictTypePage(DictTypePageAO ao);

    /**
     * 字典类型明细查询
     *
     * @param id 字典类型ID
     * @return DictTypeDetailVO 响应参数
     */
    DictTypeDetailVO queryDictTypeDetail(String id);

    /**
     * 字典类型新增数据
     *
     * @param ao 请求参数
     * @return DictTypeAddVO 响应参数
     */
    DictTypeAddVO addDictType(DictTypeAddAO ao);

    /**
     * 字典类型修改数据
     *
     * @param ao 数据
     */
    void updateDictType(DictTypeUpdateAO ao);

    /**
     * 字典类型删除数据
     *
     * @param id 字典类型ID
     */
    void deleteDictType(String id);

    /**
     * 字典类型启用、停用
     *
     * @param ao 数据
     */
    void enableDictType(DictTypeEnabledAO ao);

    /**
     * 查询用户缓存
     *
     * @return List<DictCacheDTO>
     */
    List<DictCacheDTO> queryDictCache();
}